package com.ww.springboot.boot.algorithm.leetcode2;

/**
 * 描述：
 * 给你两个由正整数和 0 组成的数组 nums1 和 nums2 。
 * 你必须将两个数组中的 所有 0 替换为 严格 正整数，并且满足两个数组中所有元素的和 相等 。
 * 返回 最小 相等和 ，如果无法使两数组相等，则返回 -1 。
 * <p>
 * <p>
 * 解题思路：
 * 计算两个数组各自除了0之外的和，然后计算两个数组中0的个数，计算出每个数组替换0之后的最小数 取两者中的大值返回即可
 *
 * @author 🧑 ‍wanwei
 * @since 2025-05-10 09:26
 */
public class B2918数组的最小相等和 {

    public static void main(String[] args) {
        int[] nums1 = new int[]{1,2,3,2};
        int[] nums2 = new int[]{1,4,3};

        long l = minSum(nums1, nums2);
        System.out.println(l);
    }

    public static long minSum(int[] nums1, int[] nums2) {
        long total1 = 0,total2 = 0,zero1 = 0,zero2 = 0;
        for (int i = 0; i < nums1.length; i++) {
            if(nums1[i] == 0){
                zero1++;
                continue;
            }
            total1 += nums1[i];
        }
        for (int i = 0; i < nums2.length; i++) {
            if(nums2[i] == 0){
                zero2++;
                continue;
            }
            total2 += nums2[i];
        }
        if(total1 + zero1 > total2 + zero2){
            if(zero2 > 0){
                return total1 + zero1;
            }else {
                return -1;
            }
        }else {
            if(zero1 > 0){
                return total2 + zero2;
            }else {
                if(total1 == total2){
                    return total1;
                }
                return -1;
            }
        }
    }
}
